import Vue from 'vue'

import Cookies from 'js-cookie'

import 'normalize.css/normalize.css' // A modern alternative to CSS resets

import Element from 'element-ui'
import 'element-ui/lib/theme-chalk/index.css'

import '@/styles/index.scss' // global css

import App from './App'
import router from './router'
import store from './store'

import i18n from './lang' // Internationalization
import './icons' // icon
import './errorLog' // error log
import './permission' // permission control
import './mock' // simulation data

import * as filters from './filters' // global filters

import TreeView from 'vue-json-tree-view'

// cinrad-ids import
import axios from 'axios'

const _date = new Date()

axios
  .get('static/cinrad/AppOptions.json?time=' + _date.getTime())
  .then(function(response) {
    // console.debug(response.data)

    // Init Cookies
    const obj = response.data.cookies

    if (obj) {
      Object.keys(obj).forEach(function(key) {
        // console.debug(key, obj[key])
        if (!Cookies.get(key)) {
          Cookies.set(key, obj[key])
        }
      })
    }

    Vue.use(Element, {
      size: Cookies.get('size') || 'medium', // set element-ui default size
      i18n: (key, value) => i18n.t(key, value)
    })

    Vue.use(TreeView)

    // register global utility filters.
    Object.keys(filters).forEach(key => {
      Vue.filter(key, filters[key])
    })

    Vue.config.productionTip = false

    Vue.prototype.appOptions = response.data

    new Vue({
      el: '#app',
      router,
      store,
      i18n,
      render: h => h(App)
    })
  })
  .catch(function(error) {
    console.log(error)
  })
